Autologowanie SSH - wymiana kluczy Kategoria: Linux | Autor: Bartłomiej Gałęzia

ssh-autologin
mv ssh-autologin /bin/ssh-autologin
chmod +x /bin/ssh-autologin
ssh-autologin -l login -g host

#!/bin/bash

#remove trash if exist
if [ -f temp_key_collection ]; then
	rm -f temp_key_collection;
fi

echo "Autologowanie ssh v2.";

user=$(whoami)
login="";
servers="";


function single () {
        echo "Single."
	
	echo "Sprawdzanie loginu.";
	if [ "$login" == "" ]; then
        	echo "Login pusty.";
		exit 0;
	fi
	echo "Sprawdzenie hosta.";
	if [ "$servers" == "" ]; then
		echo "brak hosta.";
		exit 0;
	fi
	
	echo "Sprawdzenie kluczy.";

        if [ -f ~/.ssh/id_dsa.pub ] ; then
                echo "Klucze istnieja.";
        else
                echo "Nie znaleziono id_dsa.pub. Generowanie kluczy dsa:"
                ssh-keygen -t dsa -q -f ~/.ssh/id_dsa -N "" && echo "Klucze dsa zostaly wygenerowane.";
        fi

        echo "Kopiowanie klucza."
        cat ~/.ssh/id_dsa.pub | ssh -l $login $servers 'if [ -d ~/.ssh ] ; then cat >> ~/.ssh/authorized_keys ; else install -d ~/.ssh ; cat >> ~/.ssh/authorized_keys ; fi '
        echo "Testowe polaczenie:";
        ssh $login@$servers "hostname";
	
}

function multi () {
	echo "Multi."

	echo "Sprawdzanie loginu.";
	if [ "$login" == "" ]; then
        	echo "Login pusty wiec login == whoami";
        	login=$user;
	fi


	echo "Sprawdzanie listy hostow.";
	if [ "$servers" == "" ]; then 
		echo "Lista hostow jest pusta. Dodaj hosty:";
		read servers;
	fi

	echo "Lista hostow: " $servers

	echo "Sprawdzenie kluczy."

	if [ -f ~/.ssh/id_dsa.pub ] ;then
        	echo "Klucze istnieja.";
	else
	        echo "Nie znaleziono id_dsa.pub. Generowanie kluczy dsa:"
	        ssh-keygen -t dsa -q -f ~/.ssh/id_dsa -N "" && echo "Klucze dsa zostaly wygenerowane.";
	fi

	echo "Kopiowanie kluczy."
	for i in $servers; do
	        echo $i;
	        cat ~/.ssh/id_dsa.pub | ssh -l $login $i 'if [ -d ~/.ssh ] ; then cat >> ~/.ssh/authorized_keys ; else install -d ~/.ssh ; cat >> ~/.ssh/authorized_keys ; fi '
	        ssh $login@$i 'if [ -f ~/.ssh/id_dsa.pub ] ;then echo "Klucze na "$i" istnieja, kopiuje."; cat ~/.ssh/id_dsa.pub; else echo "Klucze nie istnieja, tworze i kopiuje";ssh-keygen -t dsa -q -f ~/.ssh/id_dsa -N ""; cat ~/.ssh/id_dsa.pub; fi' >> temp_key_collection;
	done;

	echo "Rozrzucanie pelnej listy kluczy."

	cat ~/.ssh/id_dsa.pub >> temp_key_collection;
	echo "Dodawanie kluczy do tego konta."
	cat temp_key_collection | grep ssh >> ~/.ssh/authorized_keys

	echo "Dodawanie do reszty.";
	for i in $servers; do
	        echo $i;
	        cat temp_key_collection | grep ssh | ssh $login@$i "cat >> ~/.ssh/authorized_keys";
	done;

}


function hellp () {
cat <<EOF
    -l|--login  okreslenie loginu    
    -s|--single autologowanie na danego hosta
    -g|--group  autologowanie grupy hostow 
    -h|--help   wyswietla ta pomoc

    Examples:  
		ssh-autologin 
		ssh-autologin -s server1 server2
		ssh-autologin -l user_name -g host1 host2
		ssh-autologin -g host1 host2 host3
EOF

}

function default () {
	echo "Auto default."
	echo "Login == whoami, host == host1."
	echo "Sprawdzenie kluczy."

	login=$user
	servers=server1

	if [ -f ~/.ssh/id_dsa.pub ] ;then
        	echo "Klucze istnieja.";
	else
        	echo "Nie znaleziono id_dsa.pub. Generowanie kluczy dsa:"
        	ssh-keygen -t dsa -q -f ~/.ssh/id_dsa -N "" && echo "Klucze dsa zostaly wygenerowane.";
	fi

	echo "Kopiowanie klucza."
        cat ~/.ssh/id_dsa.pub | ssh -l $login $servers 'if [ -d ~/.ssh ] ; then cat >> ~/.ssh/authorized_keys ; else install -d ~/.ssh ; cat >> ~/.ssh/authorized_keys ; fi '
	echo "Testowe polaczenie:";
	ssh $login@$servers "hostname";
}
while true ; do
	case "$1" in
		-l|--login)
			login=$2
			shift 2
		;;
		-s|--single)
			login=$2
			servers=$3
			single
			exit 0
		;;
		-g|--group)
			shift 1
			servers=$*
			multi
			exit 0
		;;
		-h|--help)
			hellp
			exit 0
		;;
		*)
			default
			exit 0
		;;
	esac
done

Dodaj komentarz

Brak komentarzy, bądź pierwszy i dodaj swój komentarz